/**
 * Questa funzione prepara il campo da gioco per una nuova partita.
 */
void inizializza_campo();

/**
 * Questa funzione setta la 'sensitive' delle prime 'x' caselle a 'true' o 'false' 
 * a seconda del valore attuale della variabile flag.
 */
void set_index_sensitive(int x, bool flag);

/**
 * Vedi documentazione del file ingame_operations.cc
 */
void set_cell_owner(unsigned int id_bottone);

/**
 * Funzione di gestione turni giocatori.
 */
void change_turn();

/**
 * Questa funzione prende in ingresso i punteggi dei due giocatori e la 'label'
 * associata al relativo giocatore convertendoli in 'char'.
 * Dopodichè questa stringa così ottenuta viene settata nella finestra delle
 * vittorie sotto al nome del giocatore che ha totalizzato quel punteggio. 
 * 
 * @param[in] punti Contiene una volta le vittorie totali del g1 e una volta del g2.
 * @param[in] etichetta Contiene la label che una volta si riferisce al g1 e una volta al g2.
 */
void points_conversion(unsigned int punti, const char etichetta[]);

/**
 * Aggiorna i risultati delle partite nella finestra informativa chiamando la
 * funzione ::points_conversion due volte ma con parametri diversi a seconda
 * che si tratti del giocatore 1 o 2.
 */
void points_updater();

/**
 * Vedi documentazione del file ingame_operations.cc
 */
void create_match();

/**
 * Vedi documentazione del file ingame_operations.cc
 */
void set_player_name(const char *player_name);

/**
 * Funzione che acquisisce i nomi dei giocatori inseriti dall'utente nell'apposita finestra.
 */
extern "C" void get_name(GtkWidget *widget, gpointer user_data);

/**
 * Questa funzione resetta i punteggi delle partite vinte da entrambi i giocatori.
 */
extern "C" void reset_event(GtkWidget *widget, gpointer user_data);


